/**
 * Copyright &copy; 2015-2020 <a href="http://www.easyhis.com/">easyhis</a> All rights reserved.
 */
package com.easy.dfcapi.entity;

import com.easy.common.utils.IdGen;
import com.easy.common.utils.excel.annotation.ExcelField;
import com.easy.core.persistence.BaseEntity;
import com.easy.modules.sys.entity.User;
import com.fasterxml.jackson.annotation.JsonFormat;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 问大家Entity
 * @author waylen chi
 * @version 2018-01-12
 */
public class ApiQuestion extends BaseEntity<ApiQuestion> {
	
	private static final long serialVersionUID = 1L;
	private Integer questionId;		// 问题ID 自增
	private String id;		// UUID
	private Integer productId;		// 商品ID，是否有针对商品，没有为0
	private String questionTitle;		// 问题标题
	private String questionDesc;		// 问题描述
	private Integer questionType;		// 问题类型 1-问题 2-回答  3-回复
	private String ipAddress;		// 提问时的用户IP
	private Integer parentId;		// 问题的父节点,取值该表的question_id字段,如果该字段为0,则是一个普通问题,否则该条问题就是该字段的值所对应的问题的回复
	private ApiUser user;		// 提问用户ID
	private Date createTime;		// 提问创建时间
	
	public ApiQuestion() {
		super();
	}

	public ApiQuestion(String id){
		this.id = id;
	}

	@NotNull(message="问题ID 自增不能为空")
	@ExcelField(title="问题ID 自增", align=2, sort=0)
	public Integer getQuestionId() {
		return questionId;
	}

	public void setQuestionId(Integer questionId) {
		this.questionId = questionId;
	}
	
	@ExcelField(title="UUID", align=2, sort=1)
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}
	
	@ExcelField(title="商品ID，是否有针对商品，没有为0", align=2, sort=2)
	public Integer getProductId() {
		return productId;
	}

	public void setProductId(Integer productId) {
		this.productId = productId;
	}
	
	@ExcelField(title="问题标题", align=2, sort=3)
	public String getQuestionTitle() {
		return questionTitle;
	}

	public void setQuestionTitle(String questionTitle) {
		this.questionTitle = questionTitle;
	}
	
	@ExcelField(title="问题描述", align=2, sort=4)
	public String getQuestionDesc() {
		return questionDesc;
	}

	public void setQuestionDesc(String questionDesc) {
		this.questionDesc = questionDesc;
	}
	
	@ExcelField(title="提问时的用户IP", align=2, sort=5)
	public String getIpAddress() {
		return ipAddress;
	}

	public void setIpAddress(String ipAddress) {
		this.ipAddress = ipAddress;
	}

	public Integer getQuestionType() {
		return questionType;
	}

	public void setQuestionType(Integer questionType) {
		this.questionType = questionType;
	}

	@ExcelField(title="问题的父节点,取值该表的question_id字段,如果该字段为0,则是一个普通问题,否则该条问题就是该字段的值所对应的问题的回复", align=2, sort=6)
	public Integer getParentId() {
		return parentId;
	}

	public void setParentId(Integer parentId) {
		this.parentId = parentId;
	}
	
	@NotNull(message="提问用户ID不能为空")
	@ExcelField(title="提问用户ID", fieldType=User.class, value=".userName", align=2, sort=7)
	public ApiUser getUser() {
		return this.user;
	}

	public void setUser(ApiUser user) {
		this.user = user;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@NotNull(message="提问创建时间不能为空")
	@ExcelField(title="提问创建时间", align=2, sort=8)
	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	/**
	 * 插入之前执行方法，需要手动调用
	 */
	public void preInsert(){
		this.id = IdGen.uuid();

		this.createTime = new Date();
	}

	/**
	 * 更新之前执行方法，需要手动调用
	 */
	public void preUpdate(){
	}
	/**
	 * 插入之前执行方法，需要手动调用
	 */
	public void preInsert(Date now){
		this.id = IdGen.uuid();

		this.createTime = now;
	}

	/**
	 * 更新之前执行方法，需要手动调用
	 */
	public void preUpdate(Date now){
	}
}